package Day017_缓冲流_转换流_序列化流_打印流.demo02_转换流;

import java.io.FileInputStream;
import java.io.InputStreamReader;

/**
 * @author zhangyan
 * @date 2020/5/9 11:17
 */
/*
    转换流 java.io.InputStreamReader ，是Reader的子类，是从字节流到字符流的桥梁。它读取字节，并使用指定的字符集将其解码为字符。
    它的字符集可以由名称指定，也可以接受平台的默认字符集

    构造方法:
            InputStreamReader(InputStream in) : 创建一个使用默认字符集的字符流。
            InputStreamReader(InputStream in, String charsetName) : 创建一个指定字符集的字符流
 */
public class Test3_InputStreamReader类 {
    public static void main(String[] args) throws Exception {

        // 创建流对象,指定GBK编码
        InputStreamReader isr = new InputStreamReader(new FileInputStream("Demo02\\aaa\\a.txt"),"GBK");
        // 创建流对象,默认TUF-8编码
        InputStreamReader isr2 = new InputStreamReader(new FileInputStream("Demo02\\aaa\\a.txt"));
        // 定义变量,保存字符
        int read;
        // 使用默认编码字符流读取,乱码
        while ((read = isr.read()) != -1) {
            System.out.print((char) read); // 浣犲ソ
        }
        isr.close();

        System.out.println("---------");

        // 使用指定编码字符流读取,正常解析
        while ((read = isr2.read()) != -1) {
            System.out.print((char) read);// 你好
        }
        isr2.close();
    }
}
